package com.example.smartpark.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.example.smartpark.dto.ReservationDTO;
import com.example.smartpark.dto.ReservationQueryDTO;

/**
 * 预约服务接口
 */
public interface ReservationService {

    /**
     * 分页查询预约
     *
     * @param queryDTO 查询条件
     * @return 预约分页结果
     */
    IPage<ReservationDTO> getReservationPage(ReservationQueryDTO queryDTO);

    /**
     * 查询预约详情
     *
     * @param id 预约ID
     * @return 预约详情
     */
    ReservationDTO getReservationById(Long id);

    /**
     * 创建预约
     *
     * @param reservationDTO 预约DTO
     * @return 创建的预约
     */
    ReservationDTO createReservation(ReservationDTO reservationDTO);

    /**
     * 取消预约
     *
     * @param id 预约ID
     * @param remark 取消原因
     * @return 取消后的预约
     */
    ReservationDTO cancelReservation(Long id, String remark);

    /**
     * 管理员确认预约
     *
     * @param id 预约ID
     * @return 确认后的预约
     */
    ReservationDTO confirmReservation(Long id);

    /**
     * 管理员拒绝预约
     *
     * @param id 预约ID
     * @param remark 拒绝原因
     * @return 拒绝后的预约
     */
    ReservationDTO rejectReservation(Long id, String remark);
} 